c++ - 一个 ”?” 在字符串之前
问题描述
我想使用字符串来输入文件的路径:
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"
. 为什么?
解决方案
std::string test = "abc789";
在开始引号和第一个字母(Unicode 字符或 UTF-8 )之间有一个隐藏的LEFT-TO-RIGHT EMBEDDING字符。删除它,例如通过删除并重新键入该行,然后将消失。"
a
U+202A
E2 80 AA
?
推荐阅读
- sas - 将 SAS 字符变量与列表匹配
- syntax - 具有多个元素的数组的真值是不明确的。尝试使用 np.linspace 时使用 a.any() 或 a.all()
- mysql - 最新的 Mysql 和 Postgres 是否会自动准备每个查询?
- python - 将子进程 stdout 和 stderr 重定向到记录器
- php - 如何使用 fpdf 生成生成代码
- node.js - 异步外部函数留下开放句柄 - Jest、Supertest、Express
- reactjs - Linting 类组件 props 和状态接口声明顺序
- sql - 使用 RANK OVER PARTITION 比较前一行结果
- python - 导入 HDF5 和 h5py 模块时出错
- aws-lambda - AWS Amplify Graphql 创建一个新的用户表,有必要吗?