我真的不知道为什么,但我正在与我的>>挣扎运算符让它与getline一起正常工作。
基本上,我有一个命令类,我想在其中将用户输入分配给它的chain
属性,之后我想将用户输入与空格分隔为其字符串数组param
目前,我只想让第一个正常工作,对于拆分,我稍后会使用strok
执行此操作。
修改
我的错误:
Commande.cpp: In function 'std::istream& operator>>(std::istream&, Commande&)':
Commande.cpp:82:39: error: no matching function for call to 'std::basic_istream<char>::getline(std::__cxx11::string&, int)'
stream.getline(commande.chaine, 256);
Command.cpp
Command::Command() {
}
Command::Command(std::string _chain) {
chaine = _chain;
}
Command::Command(const Command& orig) {
}
Command::~Command() {
}
std::istream& operator >> (std::istream &stream, Command& command)
{
stream.getline(command.chain, 256);
return stream;
}
Command.h
#ifndef COMMAND_H
#define COMMAND_H
#include <iostream>
#include <assert.h>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include "Command.h"
public:
std::string chain;
std::string param[10];
Command();
Command(std::string _chain);
Command(const Command& orig);
virtual ~Command();
private:
friend std::istream& operator >> (std::istream&, Command&);
};
#endif /* COMMAND_H */
Main.cpp的
include "command.h"
int main(int argc, char** argv) {
Command command;
std::cin >> command;
}
答案 0 :(得分:0)
我改变了我对@Thomas Mattews推荐的态度,它完美无缺。所有其他答案也竖起大拇指。
std::istream& operator >> (std::istream &stream, Command& command)
{
std::getline(stream, command.chain);
return stream;
}