#include<bits/stdc++.h>
using namespace std;
int main()
{
int i=0;
char a[100][100];
do {
cin>>a[i];
i++;
}while( strcmp(a[i],"\n") !=0 );
for(int j=0;j<i;i++)
{
cout<<a[i]<<endl;
}
return 0;
}
在这里,我想退出do while循环,因为用户点击进入。但是,代码不会出现循环..
答案 0 :(得分:1)
以下内容读取一行并将其拆分为空白区域。这段代码不是人们通常期望初学者从头开始编写的。但是,在Duckduckgo或Stackoverflow上搜索会发现这个主题有很多变化。编程时,要知道您可能不是第一个需要所需功能的人。工程方式是找到最好的并从中学习。研究下面的代码。从一个小例子中,您将学习getline,string-stream,迭代器,copy,back_inserter等。真便宜!
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
int main() {
using namespace std;
vector<string> tokens;
{
string line;
getline(cin, line);
istringstream stream(line);
copy(istream_iterator<string>(stream),
istream_iterator<string>(),
back_inserter(tokens));
}
for (auto s : tokens) {
cout << s << '\n';
}
return 0;
}
答案 1 :(得分:0)
您可以使用getline
来读取ENTER,在Windows上运行:
//#include<bits/stdc++.h>
#include <iostream>
#include <string> // for getline()
using namespace std;
int main()
{
int i = 0;
char a[100][100];
string temp;
do {
getline(std::cin, temp);
if (temp.empty())
break;
strcpy_s(a[i], temp.substr(0, 100).c_str());
} while (++i < 100);
for (int j = 0; j<i; j++)
{
cout << a[j] << endl;
}
return 0;
}
虽然每个getline
都会得到整行,但“hello world”会被读取一次,你可以拆分它,只需看this post。
答案 2 :(得分:0)
首先,我们需要读取直到“\ n”字符的行,我们可以使用getline()
。提取运算符>>
在这里不起作用,因为它也会在到达空间时停止读取输入。获得整行后,我们可以将其放入stringstream
并使用cin >> str
或getline(cin, str, ' ')
来阅读各个字符串。
另一种方法可能是利用提取运算符将分隔符留在流中的事实。然后,我们可以使用cin.peek()
检查它是否是'\ n'。
以下是第一种方法的代码:
#include <iostream> //include the standard library files individually
#include <vector> //#include <bits/stdc++.h> is terrible practice.
#include <sstream>
int main()
{
std::vector<std::string> words; //vector to store the strings
std::string line;
std::getline(std::cin, line); //get the whole line
std::stringstream ss(line); //create stringstream containing the line
std::string str;
while(std::getline(ss, str, ' ')) //loops until the input fails (when ss is empty)
{
words.push_back(str);
}
for(std::string &s : words)
{
std::cout << s << '\n';
}
}
对于第二种方法:
#include <iostream> //include the standard library files individually
#include <vector> //#include <bits/stdc++.h> is terrible practice.
int main()
{
std::vector<std::string> words; //vector to store the strings
while(std::cin.peek() != '\n') //loop until next character to be read is '\n'
{
std::string str; //read a word
std::cin >> str;
words.push_back(str);
}
for(std::string &s : words)
{
std::cout << s << '\n';
}
}