c++ - 试图用命令行参数做一个简单的问题,指针让我难过
问题描述
我正在尝试反转每个命令行参数的字符。
这是我的主要方法中的唯一代码:
for(int z = 1; z < argc; z++) //Loop through every argument
{
string arg = argv[z]; //Grab the argument
string rebuildString; //Create a string to build the result
for(int i = arg.size()-1; i >= 0; i--) //Loop through characters backwards
{
char c = arg[i];
rebuildString += c;
}
char *rebuildChars; //So since argv is an array of pointers, I create a pointer here.
*rebuildChars = rebuildString.c_str(); //Assign the value of the pointer
argv[z] = rebuildChars; //Assign the current argument to the new value.
}
for(int x = 1; x < argc; x++)
{
cout << argv[x];
}
我的指针出了点问题,我收到了一些不兼容的类型错误。谁能指出出了什么问题?
解决方案
让我大吃一惊的第一件事是您将指针分配给取消引用的char*
.
char *rebuildChars; //This is fine.
*rebuildChars = rebuildString.c_str(); //ERROR! .c_str returns a char * !
argv[z] = rebuildChars;
注意 string.c_str() 的声明是const char* c_str() const noexcept;
(C++11)
而是尝试
char *rebuildChars; //This is fine.
rebuildChars = rebuildString.c_str(); //Here we assign a char * to a char *
argv[z] = rebuildChars;
请参阅TutorialsPoint 上的此参考。
推荐阅读
- matlab - Surf 和 Mesh 在 Matlab 中停止工作
- python - 在 python (scipy/numpy) 中组装矩阵
- c# - 字符串长度错误 - 保存到数据库
- apache-pig - 如何在 Pig 中查询与最小值/最大值相关的数据
- angular - 构建 Angular 6 库时为导出符号生成的元数据中遇到错误
- amazon-web-services - 如何基于多个警报扩展 aws ecs 服务
- jsoup - 如何使用 Jsoup 解析嵌套描述列表(dl 标签)?
- javascript - 在 jest 中分别运行 lint 和测试
- ssl - x509_sign 例程失败并出现 ASN1 编码例程错误
- bash - IF 语句总是计算为真