C ++ Как читать две строки из строки в отдельные строки? - PullRequest
0 голосов
/ 15 ноября 2009

Я получил строку foo с 2 строками:

string foo = "abc \n def";

Как я могу прочитать эти 2 строки из строки foo: первая строка в строку a1 и 2-я строка в строку a2? Мне нужно в финише: строка a1 = "abc"; строка a2 = "def";

Ответы [ 3 ]

8 голосов
/ 15 ноября 2009

Использовать поток строк:

#include <string>
#include <sstream>
#include <iostream>

int main()
{
    std::string       foo = "abc \n def";
    std::stringstream foostream(foo);

    std::string line1;
    std::getline(foostream,line1);

    std::string line2;
    std::getline(foostream,line2);

    std::cout << "L1: " << line1 << "\n"
              << "L2: " << line2 << "\n";
}

Проверьте эту ссылку, чтобы прочитать строки, а затем разбить строку на слова:
C ++ распечатать ограничение количества слов

1 голос
/ 15 ноября 2009

Мне кажется, это самое простое решение, хотя работает и поток строк.

См .: http://www.sgi.com/tech/stl/find.html

std::string::const_iterator nl = std::find( foo.begin(), foo.end(), '\n' ) ;
std::string line1( foo.begin(), nl ) ;
if ( nl != foo.end() ) ++nl ;
std::string line2( nl, foo.end() ) ;

Тогда просто обрежьте линии:

std::string trim( std::string const & str ) {
   size_t start = str.find_first_of( " " ) ;
   if ( start == std::string::npos ) start = 0 ;
   size_t end = str.find_last_of( " " ) ;
   if ( end == std::string::npos ) end = str.size() ;
   return std::string( str.begin()+start, str.begin()+end ) ;
}
1 голос
/ 15 ноября 2009

Возможно, вы могли бы прочитать его в строковом потоке и из потока вывести оба слова в отдельные строки.

http://www.cplusplus.com/reference/iostream/stringstream/stringstream/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...