好的,所以我需要一些帮助让我的字符串交换。
这是我想要做的整体代码,但我不能只是移动字符串。我开始尝试将其转换为字符,但大多数回复说只是使用std :: swap函数,但是我真的迷失了使用它...
我的总体目标是置换一个字符串,该字符串可以指定给字符串的某个部分。我是C ++的新手,我只是不确定如何使用C ++方法/函数来实现这一点。
(还有一个main.cc和Permutation h。但它仅用于定义变量,基本上是骨架代码)
所有帮助表示赞赏,我将在大约2小时内回来查看。
更新代码)
#include <iostream> // for cout
#include <cstdio> // for printf()
#include <sstream> // for stringstream
#include <stdio.h>
#include <string.h>
#include "Permutation.h"
using namespace std;
Permutation::Permutation() {
/* nothing needed in the constructor */
}
void Permutation::permute(const string& str) {
string stringnew = str;
int j;
int low = 0;
int high = str.length();
cout << stringnew << endl;
for (j = 0; j <= high; j++) {
string strtemp = stringnew[j];
std::swap((strtemp + low), (strtemp + j));
permute(str, low + 1, high);
std::swap(str[j + low], str[j + j]);
}
}
void Permutation::permute(const string& str, int low, int high) {
// int j;
// if (low == high) {
// cout << str << endl;
// } else {
// for (j = low; j <= high; j++) {
// std::swap(str[j + low], str[j + j]);
// permute(str, low + 1, high);
// std::swap(str[j + low], str[j + j]);
// }
// }
}
答案 0 :(得分:1)
您必须完成类接口。您无法从std::string
获得可写字符数组。
可以做的是使用数组下标运算符并将其作为str[i]
访问。您也可以使用迭代器。
原因是在C ++ 03之前,std::string
不需要是字符数组。它可能是不连续的。至少有一个实现使用std::deque
样式的“指向数组的指针数组”后备存储,这使它能够快速插入,添加和从中间删除。
此外,从面向对象的编程设计角度来看,进入对象的内部并重新排列它们并不是一件好事。
只是为了好玩,因为我想休息一下,一些代码使用数组下标与字符串混淆:
#include <cctype>
#include <string>
#include <iostream>
void uc(std::string &s)
{
size_t i;
const size_t len = s.length();
for(i=0; i<len; ++i) {
s[i] = toupper(s[i]);
}
}
void mix(std::string &s)
{
size_t i;
const size_t len = s.length();
for(i=1; i<len/2+1; ++i) {
std::swap(s[i-1], s[len-i]);
}
}
int main()
{
std::string s("Test String");
uc(s);
std::cout << s << std::endl;
mix(s);
std::cout << s << std::endl;
return 0;
}
答案 1 :(得分:0)
只需使用c_str() - 函数
std::string str("I'm a text");
char *pStr = str.c_str();
答案 2 :(得分:0)
这是C ++,而不是你指向的线程中的java。 首先
char[] x
仅对编译时已知的表大小有效声明。
另一件事是std :: string没有.toCharArray方法但它有 .c_str()方法,你可以用来从std获取 const char * ::字符串。
HTH