字符串变量,比如说"字符串str",可以直接复制到数组中吗?
Can a String variable, lets say 'String str', be directly copied into array?
如果我有一个字符串,我想在不使用内置函数的情况下反转它。是否可以直接将字符串复制到数组中?
Void Main ()
{
string str = "Abc";
int length = strlen(str);
char strArray[len];
str = strArray
String str2 = new String()
for (int i=length-1, i>=0, i--)
{
str2 = str2 +strArray[i];
}
}
是的,您可以将std::string
的内容复制到char
数组中(如其他一些答案所示(,但您不需要这样做。
std::string
内容可以用作数组!在其上使用[]
运算符。
来吧:
#include <string>
#include <iostream>
int main()
{
std::string str = "Superb!";
// Iterate over the first half of the string
for (std::size_t i = 0; i < str.size() / 2; i++)
{
// What's the equivalent index at the other end?
const std::size_t other_i = str.size() - i - 1;
// Swap the values
const char temp = str[i];
str[i] = str[other_i];
str[other_i] = temp;
}
// Have a look
std::cout << str << 'n'; // Output: !brepuS
}
容易!
这可以通过您不感兴趣的几种方式进一步改进:
std::string::size_type
是拼写std::string
索引的"正确"方法;std::swap
比char temp
古宾更受欢迎;- 除了出于教育原因外,手写循环有点愚蠢;
- 如果您不需要就地反转,一个简单的构造
std::string str2{str1.rbegin(), str2.rend()};
就可以完成工作; - 如果你这样做,
std::reverse
就是你的朋友。
假设我有一个字符串,我想在不使用内置的情况下修改它 功能
您不需要字符数组。只需对带有字符串的数组执行您计划执行的操作:
void reverse(std::string& s) {
for (int i=0;i < s.size() / 2 ; ++i) {
char temp = s[i];
s[i] = s[ s.size() - i - 1];
s[ size() - i - 1] = temp;
}
}
(未编译或测试(
假设我有一个字符串,我想在不使用内置函数的情况下对其进行修改。是否可以直接将字符串复制到数组中?
我假设,你的String
是std::string
,strlen(str)
是str.length()
的,Char
是char
的。
#include <string>
#include <iostream>
#include <memory> // std::unique_ptr<>
int main()
{
std::string str = "Hello, World!";
auto len = str.length();
auto strarray = std::make_unique<char[]>(len + 1);
auto *a = strarray.get() + len - 1;
auto *p = str.data();
while (*p)
*a-- = *p++;
std::cout << strarray << 'n';
}
输出:
!dlroW ,olleH
尝试类似此代码的内容将单字节字符串复制到数组中。不要忘记 null 终止符来输出复制的字符串。
std::string str = "Abc";
char* strarray = new char[str.length() + 1];
str.copy(strarray, str.length());
strarray[str.length()] = 0;
std::cout << strarray << std::endl;
delete[] strarray;
相关文章:
- 将C#字符串数组传递给C++
- 如何为 C 型字符串数组编写 getter 和 setter?
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 尝试将 c 字符串数组与分隔符连接起来
- 将字符串数组传递给接受常量字符**的函数
- 返回 C++ 中的字符串数组
- 如何从COM模块中的函数返回字符串数组?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 删除字符串数组
- 如何将字符串数组返回到 java JNI
- 将字符串数组作为函数参数传递
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 乘以字符串/数组和全局数组
- 递归二进制搜索与字符串数组
- 如何初始化一个标准::字符串数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++字符串数组的动态向量
- 给定一个等长字符串数组