visual studio 2012-简单的C++程序不使用wstrings和cout进行编译

visual studio 2012 - Simple C++ program not compiling using wstrings and cout

本文关键字:wstrings cout 编译 2012- studio 简单 程序 C++ visual      更新时间:2023-10-16

我正在使用Visual Studio 2012:构建这个简单的C++程序

#include <stdafx.h>
#include <string>
#include <iostream>
int main()
{
    std::wcout << "Hello World...";
    std::string input_data;
    std::string output_data("Hello. Please type your name");
    std::wcout << output_data;
    std::wcin >> input_data;
    std::wcout << "Your name is " << input_data;
    return 0;
}

我不会编译。获得以下错误:

error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::wistream' (or there is no acceptable conversion)
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
IntelliSense: no operator "<<" matches these operands
            operand types are: std::basic_ostream<wchar_t, std::char_traits<wchar_t>> << std::string    
IntelliSense: no operator "<<" matches these operands
            operand types are: std::wostream << std::string
IntelliSense: no operator ">>" matches these operands
            operand types are: std::wistream >> std::string

有人能帮我修一下吗?

您应该尝试更改std::wstring的所有std::string位置。。。或者全部wcin/wcout用于cin/cout。。。(在第一种情况下,为字符串加前缀,如L"aaa"。例如,这非常有效:

#include <string>
#include <iostream>
int main()
{
    std::wcout << L"Hello World...";
    std::wstring input_data;
    std::wstring output_data(L"Hello. Please type your name");
    std::wcout << output_data;
    std::wcin >> input_data;
    std::wcout << L"Your name is " << input_data;
    return 0;
}

或者,您可以将所有内容切换为窄字符串:

#include <string>
#include <iostream>
int main()
{
    std::cout << "Hello World...";
    std::string input_data;
    std::string output_data("Hello. Please type your name");
    std::cout << output_data;
    std::cin >> input_data;
    std::cout << "Your name is " << input_data;
    return 0;
}