首页 > 解决方案 > 一个 ”?” 在字符串之前

问题描述

我想使用字符串来输入文件的路径:

char** argv;
char* mytarget[2]={ (char*)"‪D:\\testlas\\BigOne.pcd",(char*)"‪‪D:\\testlas\\SmallOne.pcd" };
argv = mytarget;
for(int i=0;i<2;i++)
{
   std::cout << "m.name: " << argv[i] <<std::endl;
}

但是, cout 输出:

m.name: ?‪D:\\testlas\\BigOne.pcd 
m.name: ?‪D:\\testlas\\SmallOne.pcd   

?为什么在字符串之前有一个?

我使用 VS2017 C++11。

我创建了一个新程序并使用了代码:

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

int main()
{
    std::string test = "‪abc789";
    cout << test << endl;
    return 0; 
}

它还输出"?abc789". 为什么?

标签: c++c++11visual-c++endl

解决方案


std::string test = "‪abc789";

在开始引号和第一个字母(Unicode 字符或 UTF-8 )之间有一个隐藏的LEFT-TO-RIGHT EMBEDDING字符。删除它,例如通过删除并重新键入该行,然后将消失。"aU+202AE2 80 AA?


推荐阅读