我无法使用 wcout 输出字符串
I can't output a string with wcout
这是 this question 的一种重复。我遵循了建议(我认为)并包含了 <string>
但我的脸上出现了完全相同的错误:
error C2679: binary '<<' : no operator found which takes a right-hand
operand of type 'std::string' (or there is no acceptable conversion)
#include <string>
#include <iostream>
using namespace std;
int main() {
string texte;
texte = "pouet";
wcout << texte << endl;
return 0;
}
编辑:我一点也不自豪地说这个问题是由于我没有选择正确的项目作为 "starting project"。 Visual Studio 有点难以理解……然而,最初真正的问题是关于我的实际项目,并且是关于无法通过 wcout
输出的标准字符串。我重新格式化了问题以相应地重新定位主题。喜欢就给我投反对票吧,我活该...
如果你使用 wcout 你也必须使用 wstring 并且你必须在你的 const 字符串前面放一个 'L'。
wstring texte;
texte = L"pouet";
wcout << texte << endl;
这在我的带有最新 MinGW 的 CLion 上编译和运行良好
#include <string>
#include <iostream>
using namespace std;
int main() {
string texte;
texte = "pouet";
cout << texte << endl;
return 0;
}
对于 wcout,又名宽字符串,这应该提供正确的输出:
#include <string>
#include <iostream>
using namespace std;
int main() {
wstring texte;
texte = L"pouet";
wcout << texte << endl;
return 0;
}
cout 输出 'regular' 个字符为 1 个字节宽的字符串(通常是 ASCII),而 wcout 输出 'wide' 个字符组成的字符串,这些字符的表示占用超过 1 个字节。
你嫁给字符串类型了吗?您可以通过将 texte 设为 char* 而不是字符串来完成您想做的事情:
char* texte = "pouet";
std::basic_string
输出运算符未重载以对流的任意字符类型进行运算。您的选择是:
从您的 std::string
创建一个 std::wstring
,例如:
std::wcout << std::wstring(texte.begin(), texte.end());
由于 C 风格字符串的输出运算符重载,即使字符类型不匹配,您也可以获得字符数组:
std::wcout << texte.c_str();
这是 this question 的一种重复。我遵循了建议(我认为)并包含了 <string>
但我的脸上出现了完全相同的错误:
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
#include <string>
#include <iostream>
using namespace std;
int main() {
string texte;
texte = "pouet";
wcout << texte << endl;
return 0;
}
编辑:我一点也不自豪地说这个问题是由于我没有选择正确的项目作为 "starting project"。 Visual Studio 有点难以理解……然而,最初真正的问题是关于我的实际项目,并且是关于无法通过 wcout
输出的标准字符串。我重新格式化了问题以相应地重新定位主题。喜欢就给我投反对票吧,我活该...
如果你使用 wcout 你也必须使用 wstring 并且你必须在你的 const 字符串前面放一个 'L'。
wstring texte;
texte = L"pouet";
wcout << texte << endl;
这在我的带有最新 MinGW 的 CLion 上编译和运行良好
#include <string>
#include <iostream>
using namespace std;
int main() {
string texte;
texte = "pouet";
cout << texte << endl;
return 0;
}
对于 wcout,又名宽字符串,这应该提供正确的输出:
#include <string>
#include <iostream>
using namespace std;
int main() {
wstring texte;
texte = L"pouet";
wcout << texte << endl;
return 0;
}
cout 输出 'regular' 个字符为 1 个字节宽的字符串(通常是 ASCII),而 wcout 输出 'wide' 个字符组成的字符串,这些字符的表示占用超过 1 个字节。
你嫁给字符串类型了吗?您可以通过将 texte 设为 char* 而不是字符串来完成您想做的事情:
char* texte = "pouet";
std::basic_string
输出运算符未重载以对流的任意字符类型进行运算。您的选择是:
从您的
std::string
创建一个std::wstring
,例如:std::wcout << std::wstring(texte.begin(), texte.end());
由于 C 风格字符串的输出运算符重载,即使字符类型不匹配,您也可以获得字符数组:
std::wcout << texte.c_str();