有没有什么方法可以将字符串转换为char[]来实现这样的功能
Is there any way to convert a string to a char[] to make something like this work?
我试图在不使用任何库函数的情况下获取字符串中的字符数。
我收到一个"数组初始值设定项必须是初始值设定值列表或文字字符串"错误。
using namespace std;
string stringLength(string myString) {
char string[] = myString.c_str();
while (string[i] != 0) {
//code to calculate length of char string[]
}
int main() {
string myString = "hello";
cout << stringLength(myString) << endl;
cout << myString << endl;
return 0;
}
您可以使用两个成员函数来确定std::string
的长度:size()
和length()
。你可以直接使用它们:
int main() {
string myString = "hello";
cout << myString.length() << endl;
cout << myString << endl;
return 0;
}
如果你真的,真的坚持用老式的C方法,不要。但是,拉出内部字符指针的正确方法是通过c_str()
或data()
@Barry的做法是正确的
但如果这是你想要的,请检查这个:
#include <string>
#include <iostream>
using namespace std;
size_t stringLength(string myString) {
size_t count = 0;
const char * pstr = myString.c_str();
while (pstr[count] != 0) {
//code to calculate length of char string[]
++count;
}
return count;
}
int main() {
string myString = "hello";
cout << stringLength(myString) << endl;
cout << myString << endl;
return 0;
}
myString.c_str()返回指向字符串的指针。
const char* str = myString.c_str();
int length = 0;
while (*str != NULL) {
length++;
str++;
}
相关文章:
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何使用lock_guard在c++11中实现scoped_lock功能
- 多次实现成员功能
- 如何在现代C++中实现没有宏的系统特定功能
- 使用 std::call_once 实现类似单例的功能
- "this"关键字在C++中的实现限制,因为它与危险但功能示例有关
- Linux 源代码中普通磁盘文件的"轮询"功能在哪里实现?
- 如何实现删除数组的功能?
- 我当前实现的双向链表类是否需要重构迭代器 end() 功能?
- 如何实现功能线程安全
- 实现功能对象绑定而无需使用C 11
- 基于类实现功能的困难
- 远程过程调用和MIDL:如何使用[OUT]属性实现功能
- 对CUDA实现功能的未定义引用
- 在班级基础中实现功能的最有效方法
- 在C 中超载宏实现功能
- 如何在编译过程中实现功能单元测试
- 实现功能齐全的移位流语法
- 在C++中实现功能的两种方法有什么区别?