#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:在后续步骤中使用一些字符串。
答案 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
将包含冒号后面的字符串。