没有得到char数组作为输出?

时间:2014-05-09 09:48:06

标签: c++ string input char

#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数组,其中我想存储&#34; ADD:&#34;和名称字符串,我想存储要添加的字符串。输入格式为 ADD:狼。为什么addi没有采取&#34; ADD:&#34;串??或者我怎么做,因为我需要比较ADD:在后续步骤中使用一些字符串。

1 个答案:

答案 0 :(得分:3)

我的猜测是,您希望fgets调用获取前四个字符,然后使用std::cin获取剩余行。然而它并不像那样工作。 fgets调用获取完整行,即使它只将四个字符写入缓冲区。然后使用std::cin的输入将等待从未到来的输入。

相反,我建议您阅读std::getline的完整行,然后将字符串拆分为冒号以获取&#34;键&#34;和&#34;价值&#34;。


实际上,由于std::getline支持简单的标记化,您可以使用两个调用来读取输入:

std::string op;
std::string data;

std::getline(std::cin, op, ':');
std::getline(std::cin, data);

现在字符串op将包含例如ADD(冒号前面的字符串),data将包含冒号后面的字符串。