我有一个用XCode编译的程序。在该程序中,我利用了stringstream的功能,可以根据分配给它们的类型存储值。
例如,用户在控制台中输入字母,数字和符号,并用空格分隔。我打电话给getline,它获取所有三个值并将它们存储在字符串中。然后,我使用该字符串的数据创建一个stringstream,并将值分配给某些变量,在这种情况下为char,int和char。我在XCode中编译并运行,并且可以正常工作。然后,我在终端中提取相同的文件,然后调用g ++ -o可执行文件名fileName.cpp。在这里,我得到一个错误。
工作示例:
main.cpp
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
string buffer;
char letter;
int number;
char symbol;
cout << "Enter (letter) (number) (symbol): ";
getline(cin, buffer);
stringstream(buffer) >> letter >> number >> symbol; //The error occurs here
cout << letter << " " << number << " " << symbol << endl;
return 0;
}
我在XCode中编译并运行:
Enter (letter) (number) (symbol): B 145 #
B 145 #
Program ended with exit code: 0
我使用g ++进行编译:
$ g++ -o test main.cpp
main.cpp:14:26: error: invalid operands to binary expression ('std::__1::stringstream' (aka 'basic_stringstream<char>') and 'int')
stringstream(buffer) >> letter >> number >> symbol;
~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~
,然后遵循所有这些步骤:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c ++ / v1 / istream:789:1:注意:候选函数不可行:没有从'char'到'的已知转换第2个未签名的字符' 论点 运算符>>(basic_istream&__is,未签名的字符 __s) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:797:1:注意:候选函数不可行:没有从'char'到'signed char <的已知转换< em>'为第二 论点 运算符>>(basic_istream&__is,带符号的字符 __s) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:804:1:注意:候选函数[with _CharT = char,_Traits = std :: __ 1 :: char_traits ]不可行: 第一个参数没有从'std :: __ 1 :: stringstream'(aka'basic_stringstream')到'basic_istream>&'的已知转换 运算符>>(basic_istream <_CharT,_Traits>&__is,_CharT&__c) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:832:1:注意:候选函数不可行:没有从'char'到'unsigned char&的已知转换'第二 论点 运算符>>(basic_istream&__is,未签名的char&__c) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:840:1:注意:候选函数不可行:没有从'char'到'signed char&的已知转换'第二 论点 运算符>>(basic_istream&__is,已签名的char&__c) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:220:20:注意:候选函数不可行:未知从'char'转换为 'std :: __ 1 :: basic_istream&()(std :: __ 1 :: basic_istream&)'作为第一个参数 basic_istream&运算符>>(basic_istream&( __ pf)(basic_istream&)) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:224:20:注意:候选函数不可行:没有从'char'到的已知转换 'basic_ios> :: char_type,std :: __ 1 :: basic_istream> :: traits_type>&()(basic_ios> :: char_type,std :: __ 1 :: basic_istream> :: traits_type>&)'(又名'第一个参数的basic_ios>&()(basic_ios>&)') basic_istream&运算符>>(basic_ios& ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:229:20:注意:候选函数不可行:未知从'char'转换为 'std :: __ 1 :: ios_base&()(std :: __ 1 :: ios_base&)'作为第一个参数 basic_istream&运算符>>(ios_base&( __ pf)(ios_base&)) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:232:20:注意:候选函数不可行:未知从'char'转换为 'basic_streambuf> :: char_type,std :: ____ 1 :: basic_istream> :: traits_type> *' (aka'basic_streambuf> ')作为第一个参数 basic_istream&运算符>>(basic_streambuf __sb); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:233:20:注意:候选函数不可行:没有从'char'到'bool&'的已知转换对于第一个参数 basic_istream&运算符>>(bool&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:234:20:注意:候选函数不可行:从'char'到'short&'的未知转换第一次 论点 basic_istream&运算符>>(short&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:235:20:注意:候选函数不可行:没有从'char'到'unsigned short&的已知转换为 第一个论点 basic_istream&运算符>>(无符号short&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:236:20:注意:候选函数不可行:没有从'char'到'int&'的已知转换对于第一个参数 basic_istream&运算符>>(int&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:237:20:注意:候选函数不可行:没有从'char'到'unsigned int&的已知转换'第一 论点 basic_istream&运算符>>(unsigned int&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:238:20:注意:候选函数不可行:从'char'到'long&'的未知转换对于第一个参数 basic_istream&运算符>>(long&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:239:20:注意:候选函数不可行:没有从'char'到'unsigned long&的已知转换'第一 论点 basic_istream&运算符>>(无符号long&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:240:20:注意:候选函数不可行:从'char'到'long long& '第一 论点 basic_istream&运算符>>(long long&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:241:20:注意:候选函数不可行:没有从'char'到'unsigned long long的已知转换&' 对于第一个参数 basic_istream&运算符>>(无符号long long&__n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:242:20:注意:候选函数不可行:没有从'char'到'float&'的已知转换第一次 论点 basic_istream&运算符>>(float&__f); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:243:20:注意:候选函数不可行:没有从'char'到'double&'的已知转换第一次 论点 basic_istream&运算符>>(double&__f); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:244:20:注意:候选函数不可行:没有从'char'到'long double& '第一 论点 basic_istream&运算符>>(long double&__f); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:245:20:注意:候选函数不可行:没有从'char'到'void &'第一 论点 basic_istream&运算符>>(void &__p); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:740:1:注意:候选模板已忽略:无法将'_CharT '与'char'相匹配 运算符>>(basic_istream <_CharT,_Traits>&__is,_CharT __s) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:1506:1:注意:候选模板已忽略:无法将'basic_string'与'char'相匹配 运算符>>(basic_istream <_CharT,_Traits>&__is, ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/istream:1638:1:注意:候选模板已忽略:无法将'bitset <_Size>'与'char'相匹配 运算符>>(basic_istream <_CharT,_Traits>&__is,位集<_Size>&__x) ^ 产生1个错误。
我对stringstream的使用是否错误? (顺便说一句,为什么XCode允许代码编译而g ++不允许编译?我以为XCode使用相同的g ++)