#include <iostream>
#include <string>
using namespace std;
int main()
{
char addi[5];
string name;
string a="ADD:";
fgets(addi,5, stdin);
cin>>name;
addi[5]='\0';
cout<<"addi"<<addi<<endl;
我有一个addi char数组,我要在其中存储“ ADD:”,并在名称字符串中,我要存储要添加的字符串。输入将采用ADD:wolf格式。为什么addi不使用“ ADD:”字符串??或替代地,由于我需要在其他步骤中将ADD:与某些字符串进行比较,因此我将如何处理。
最佳答案
我的猜测是,您希望fgets
调用获得前四个字符,然后使用std::cin
获得其余行。但是,它不是那样工作的。 fgets
调用获得完整的行,即使它仅将四个字符写入缓冲区。然后,带有std::cin
的输入将等待永远不会出现的输入。
相反,我建议您使用std::getline
阅读完整的行,然后在冒号处拆分字符串以获取“键”和“值”。
实际上,由于std::getline
支持简单的标记化,因此您可以使用两个调用来读取输入:
std::string op;
std::string data;
std::getline(std::cin, op, ':');
std::getline(std::cin, data);
现在字符串
op
将包含例如ADD
(冒号前面的字符串),data
将包含冒号后面的字符串。关于c++ - 没有获取char数组作为输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23561504/