#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/

10-16 04:39