如何使用指针获取字符串数据
How to get string data back using pointer?
我无法使用指向 char 数组的指针取回我的字符串数据。你能给我解释一下我做错了什么吗?
#include "stdafx.h"
#include <conio.h>
#include <string>
using namespace std;
string GetString()
{
return string("255");
}
int _tmain(int argc, _TCHAR* argv[])
{
char* str_p = const_cast<char*>(GetString().c_str());
printf("Pointer : %sn", str_p);
string str;
str = str_p[0];
str += str_p[1];
str += str_p[2];
printf("Constructed : %sn", str.c_str());
_getch();
return 0;
}
控制台输出为:
Pointer :
Constructed :
这行有很多错误:
char* str_p = const_cast<char*>(GetString().c_str());
GetString()
返回一个临时string
。它在行的末尾被摧毁。因此,您最终会得到一个悬而未决的指针,指向已解除分配的内部数据。此外,const_cast
只有在您真正真正需要时才应该使用它 - 直接编辑数据只是自找麻烦。
如果你想要一个指向该字符串的指针,正确的做法是:
string old = GetString(); // make sure it doesn't go out of scope
const char* str_p = old.c_str(); // while this pointer is around
相关文章:
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- C++ - 使用用户输入的字符串数据检查结构字符串数据(无限执行 while 循环)
- 如果我在块中编写字符串文字,是否会从数据部分复制整个字符串数据?
- 无法在 c++ 中将字符串分配给字符串数据类型
- 将特定字符串数据解析为变量
- C++ 将字符串数据包转换为 iphdr语言 - 字符串数据包的格式应该是什么?
- 基于给定字符串数据类型的链表删除节点
- 插入了 C++ 数组字符串数据,但在显示输出时不显示
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 将元音与字符串数据类型的字符串分开,并将其存储在新字符串中
- 放置在外部 DLL 中的类中的字符串数据的内存损坏
- 创建字符串数据串起
- 如何在C++中将字符串数据存储在字符串 2D 数组中
- C++程序不返回文件中文本和字符串数据的值
- C++:在字符串数据类型中创建单词"letter after letter"
- 将向量中的字符串数据解析为适当的数据类型 c++
- 如何将提取的字符串数据转换为字符数组
- 字符串数据类型变量初始化
- 如何从本机空间中的宗地中检索字符串数据
- 在C 中使用字符串数据类型的问题