简单的字符串操作
回答
是的,有几种方法可以做到这一点,但你必须做字符串拷贝第一,因为如果你没有,你会修改内存你不能(存储字符串文字哪里)。
const char* a = "Mission Impossible"; // const char*, not char*, because we can't
// modify its contents
char buf[80] = {}; // create an array of chars 80 large, all initialised to 0
strncpy(buf, a, 79); // copy up to 79 characters from a to buf
cout << *(buf + 1); // prints i
buf[1] = 'b';
cout << *(buf + 1); // prints b
*(buf + 1) = 't';
cout << buf[1]; // prints t
也就是说,如果这项工作不适合学习的目的,强烈建议您学习和使用std::string
而不是C风格的字符串。几乎在任何情况下它们都优越,并且会导致代码中的挫败感和错误少得多。
改变这种最简单的方法是做*(a+1)='value_you_want';
这将改变指针的内容(你的情况下,指针是一个+ 1)您设置的值。
我想你是指'*(a + 1)'? – fge 2011-12-17 19:29:49
@fge不是应该修改指针的内容吗?如果没有,那么这就是我的意思:) – 2011-12-17 19:31:00
这将工作,如果数据肯定是可变的;如果它可能是像这样的字符串常量,那不是一个好主意。 – 2011-12-17 19:31:03
没有,char* a
实际上是只读的,如果你试图修改的内容,你会得到不确定的行为。理想情况下,您应该声明a
为const char*
。
和现代编译器甚至会在此代码上发出警告 – Lol4t0 2011-12-17 19:33:21
char a[] = "Mission Impossible";
a[1] = 'x';
字符串文字不能修改。通常情况下,它们会放置一部分二进制文件,这些文件将被映射为只读文件,因此写入它们会产生错误。 (这是实现定义的行为,但这种情况是最常见的实现,这些天。)
通过声明字符串的字符数组它是可写的。另一替代方案将是重复的字符串文字到堆存储器,无论是通过malloc
,new
,或std::string
。
- 1. 简单的C字符串操作
- 2. 简单的JavaScript字符串操作
- 3. greasemonkey简单的字符串操作
- 4. PHP简单字符串操作
- 5. 的StringIndexOutOfBoundsException用简单的字符串操作
- 6. 在VB.NET中简单的字符串操作
- 7. 简单但令人困惑的Ruby字符串操作
- 8. 字符串操作的简单序言解释
- 9. 拆分和更换简单的字符串操作
- 10. PHP - 简单的数组/字符串操作
- 11. 操作字符串内的操作符
- 12. Android的字符串操作,字符串中的单独的行
- 13. 字符串操作
- 14. 字符串操作
- 15. 字符串操作
- 16. 字符串操作
- 17. 字符串操作
- 18. 字符串操作
- 19. 字符串操作
- 20. 字符串操作
- 21. 字符串操作
- 22. 字符串操作?
- 23. 字符串操作
- 24. 字符串操作
- 25. 字符串操作
- 26. 字符串操作
- 27. 字符串操作
- 28. 字符串操作
- 29. 字符串操作
- 30. 字符串操作
第一,它必须是'为const char * A =“使命可能”' 你期望的输出是什么?你想改变什么? – balki 2011-12-17 19:30:55
你可以在整个地方改变很多值,但你确实需要更具体才能获得明智的结果。 – 2011-12-17 19:33:52
“更改此值”是什么意思? – 2011-12-17 20:51:18