我尝试一次读取一个用户输入,直到用户打印输入。目前,这在读取时工作,直到输入被按下,但一次只读取一个字符。有关如何通过单词阅读的任何建议吗?
#include<iostream>
#include<string.h>
using namespace std;
int main(){
char a[256];
int i=0;
do{
cin>>a[i++];
} while(cin.peek() != '\n');
for(int j= 0 ; j < i ; j++)
cout<< a[j] << " ";
return 0;
}
答案 0 :(得分:1)
您可以尝试使用
std::string a[256];
而不是
char a[256];
然而,使用
的逻辑while(cin.peek() != '\n');
有缺陷。如果在点击 Enter 之前输入空格字符,程序将等待您输入更多输入。
最好使用std::getline()
读取一行文字,然后使用stringstream
解析文本行。
我还建议使用std::vector<std::string>
代替std::string
数组。
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> words;
std::string line;
getline(std::cin, line);
std::istringstream str(line);
std::string word;
while ( str >> word )
{
words.push_back(word);
}
for ( auto& w : words )
{
std::cout << w << " ";
}
return 0;
}
答案 1 :(得分:0)
以下是使用getline
和std::string
s容器
#include <iostream>
#include <iterator>
#include <algorithm>
#include <string>
int main()
{
std::vector<std::string> tokens;
std::copy(std::istream_iterator<std::string> {std::cin}, {},
std::back_inserter(tokens));
for(auto && elem: tokens)
std::cout << elem << '\n';
}