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