Не могу разобраться как найти первую букву второго слова в строке, и найти ее ASCII код. Помогите пожалуйста.
#include
#include
using namespace std;
int main()
{
string s;
int sk = 0, ast = 0;
cout <<" ievadiet virkni: ";
getline (cin, s);
sk = s.length();
size_t p = 0;
while ((p = s.find(' ', p)) != string::npos)
{
++ast;
++p;
}
cout<<"Rakstzimju skaits virkne: " << sk <<endl;
cout<<"Atstarpju skaits teikuma ir: " << ast <<endl;
system("pause");
return 0;
}
Другие языки программирования и технологии
найти первую букву второго слова в строке. c++
Что есть строка? Что есть слова?
Пусть строка -- набор символов не начинающихся с пробела и не кончающаяся им, в которой могут встречаться единичные пробелы. Слова -- это все символы находящиеся между двумя пробелами или началом строки и пробелом или пробелом и концом строки.
Исходя из вышесказанного, твоя программа творит какую-то херню, либо уточняй задание.
Исходя из вышесказанного, можно написать что-то типа:
#include <string>
#include <iostream>
using namespace std;
int main() {
string s;
cout << "string? ";
getline(cin, s);
size_t p = s.find(' ');
if (p != string::npos // в строке есть хотя бы два слова
&& s.length() >= p + 2 // после пробела строка еще вмещает хотя бы два символа
&& s[p + 2] != ' ' // и этот символ не пробел, т. е. второе слово не состоит из одного символа
) {
// найден второй символ во втором слове
cout << s[p + 2] << endl;
// его код, при условии, что используется кодировка ASCII
cout << int(s[p + 2]) << endl;
}
}
ЗЫ: как общее замечание, странно что в С++ от стандарта к стандарту добавляется куча всяких возможностей, в стандартную библиотеку суется всякая херня, но при этом добавить удобные функции (типа split для строк), присутствующие в любом современном языке, в стандартную библиотеку никто не может или не хочет.
Пусть строка -- набор символов не начинающихся с пробела и не кончающаяся им, в которой могут встречаться единичные пробелы. Слова -- это все символы находящиеся между двумя пробелами или началом строки и пробелом или пробелом и концом строки.
Исходя из вышесказанного, твоя программа творит какую-то херню, либо уточняй задание.
Исходя из вышесказанного, можно написать что-то типа:
#include <string>
#include <iostream>
using namespace std;
int main() {
string s;
cout << "string? ";
getline(cin, s);
size_t p = s.find(' ');
if (p != string::npos // в строке есть хотя бы два слова
&& s.length() >= p + 2 // после пробела строка еще вмещает хотя бы два символа
&& s[p + 2] != ' ' // и этот символ не пробел, т. е. второе слово не состоит из одного символа
) {
// найден второй символ во втором слове
cout << s[p + 2] << endl;
// его код, при условии, что используется кодировка ASCII
cout << int(s[p + 2]) << endl;
}
}
ЗЫ: как общее замечание, странно что в С++ от стандарта к стандарту добавляется куча всяких возможностей, в стандартную библиотеку суется всякая херня, но при этом добавить удобные функции (типа split для строк), присутствующие в любом современном языке, в стандартную библиотеку никто не может или не хочет.
Похожие вопросы
- Помогите блок написать. На Си написать, как найти первое по алфавиту слово в строке.
- C# Парсинг слов из строки без регистра
- c++ в словах, которые начинаются и заканчиваются одной и той же буквой, послед и первая буква должны стать большими
- C++. Поменять местами слова в строке
- Pascal. Дана строка, найти длину первого и последнего слова первого я нашел, а как второго не понимаю помогите
- Заменить в строке все заглавные буквы в строчные и наоборот c++
- Как найти слово в строке. Паскаль
- Как изменить букву диска через командную строку (или пакетный файл)?
- Програма на С++ Ввести с клавиатуры строку символов и перевернуть каждое четное слово в строке.
- замена слов в строке в СИ
Но как пример, пусть будет.
Для первой буквы второго слова (исходя из указанных мной условий) будет просто:
#include <string>
#include <iostream>
using namespace std;
int main() {
string s;
cout << "string? ";
getline(cin, s);
size_t p = s.find(' ');
if (p != string::npos) { // в строке есть хотя бы два слова
// найден второй символ во втором слове
cout << s[p + 1] << endl;
// его код, при условии, что используется кодировка ASCII
cout << int(s[p + 1]) << endl;
}
}