[英]C++ - Read in input one word at a time
我正在尝试一次读入用户输入的单词,直到用户打印回车。 目前,此方法可以读取直到按下回车键,但一次只能读取一个字符。 关于如何通过单词阅读的任何建议?
#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;
}
您可以尝试使用
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;
}
这是使用getline
和std::string
容器的另一种紧凑方式
#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';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.