Другие языки программирования и технологии

найти первую букву второго слова в строке. c++

Не могу разобраться как найти первую букву второго слова в строке, и найти ее 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;
}
Pavel S.
Pavel S.
324
Что есть строка? Что есть слова?
Пусть строка -- набор символов не начинающихся с пробела и не кончающаяся им, в которой могут встречаться единичные пробелы. Слова -- это все символы находящиеся между двумя пробелами или началом строки и пробелом или пробелом и концом строки.
Исходя из вышесказанного, твоя программа творит какую-то херню, либо уточняй задание.
Исходя из вышесказанного, можно написать что-то типа:

#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 для строк), присутствующие в любом современном языке, в стандартную библиотеку никто не может или не хочет.
Иван Чернявский
Иван Чернявский
91 797
Лучший ответ
Иван Чернявский Че-то загнался и нашел вторую букву :-(
Но как пример, пусть будет.
Для первой буквы второго слова (исходя из указанных мной условий) будет просто:

#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;
}
}