C++编程的输入问题
在键盘上输入多个字符串,以空格分开。怎么实现在按下换行符时,将这些字符串输入到一个字符串数组中,比如按下asd sdf sdg,按下回车键,就把asd存入事先定义的字符串数组的
下标为0的位置,sdf存入下标为1的位置。。。
#include <iostream> #include <vector> #include <string> #include <sstream> #include <iterator> #include <algorithm> std::vector<std::string> foo( std::istream& in ) { std::string line; std::getline( in, line ); std::vector<std::string> result; std::istringstream is(line); std::copy( std::istream_iterator<std::string>(is), std::istream_iterator<std::string>(), std::back_inserter(result) ); return result; } int main( void ) { std::vector<std::string> arr = foo(std::cin); for( size_t i=0; i!=arr.size(); ++i ) std::cout << arr[i] << '\n'; }
#include <iostream> #include <vector> #include <string> std::vector<std::string> string_split( const std::string& s ) { std::vector<std::string> result; for( size_t i,j=0; ; ) { i = s.find_first_not_of( "\t\n\v\f\r ", j ); if( i == std::string::npos ) break; j = s.find_first_of( "\t\n\v\f\r ", i ); if( j == std::string::npos ) { result.emplace_back( s, i ); break; } else result.emplace_back( s, i, j-i ); } return result; } int main( void ) { std::string line; std::getline( std::cin, line ); std::vector<std::string> arr = string_split(line); for( size_t i=0; i!=arr.size(); ++i ) std::cout << arr[i] << '\n'; }