编辑***
我在替换二维数组中的字符时遇到麻烦。最初,我的代码从文本文件读取并将数据存储在临时字符串中。我对如何用其他字符替换字符感到困惑。我使用嵌套的for循环,但是代码不起作用。感谢您的帮助!
我正在尝试将p替换为'*',将w替换为'〜'
string temp;
string arr3[25][16];
arr1[16];
int i =0;
int j =0;
ifstream inputfiles;
inputfiles.open("mapPoke.txt");
if (inputfiles.is_open())
{
while (getline(inputfiles, temp))
{
split(temp, ',', arr1, 16);
arr3[i][j] = temp;
for (int i = 0; i < 25; i++)
{
for (int j = 0; j < 16; j++)
{
if (temp[j] == 'p'){
temp[j] = '*';
}
else if (temp[j] == 'w')
{
temp[j] = '~';
}
}
}
}
}
这是我要替换的数据
w,w,w,w,w,w,w,p,p,p,p,p,p,p,p,p
p,w,w,w,w,w,w,G,p,p,C,p,p,p,G,p
p,w,w,w,w,w,w,p,p,p,p,p,p,p,p,p
p,w,G,w,w,w,w,p,p,p,p,p,p,p,p,p
p,p,p,p,w,w,w,p,p,p,p,G,p,p,p,p
p,C,w,w,w,w,w,p,C,p,p,p,p,C,p,p
p,p,p,w,w,w,w,w,p,p,p,p,p,p,p,p
p,p,p,p,w,w,w,p,p,p,p,p,p,p,p,G
p,G,p,p,w,w,p,p,p,p,p,p,p,p,p,p
p,p,p,w,w,p,p,C,p,p,p,C,p,p,C,p
p,p,p,w,w,p,p,w,G,p,p,p,p,p,p,p
p,w,p,C,w,w,p,w,w,w,p,G,w,w,p,p
p,w,p,p,p,w,p,p,p,p,p,p,w,w,w,G
p,C,G,w,w,w,p,p,p,C,p,w,w,w,w,w
p,p,w,w,w,w,w,p,p,p,p,w,w,w,w,w
p,p,w,w,w,w,w,p,p,p,p,w,w,w,w,w
p,p,p,w,w,w,w,w,w,p,p,p,w,w,w,w
p,G,p,w,w,w,w,w,w,C,p,p,w,w,w,w
p,p,w,w,w,w,w,w,p,p,p,w,w,w,w,w
p,p,w,w,w,w,w,w,G,p,C,w,w,w,w,w
p,p,w,w,w,w,w,w,w,p,p,p,w,w,w,w
p,p,C,w,w,w,w,w,w,p,p,p,G,w,w,w
p,p,p,p,p,p,G,p,p,p,p,p,p,w,p,w
p,G,p,p,p,p,p,C,p,p,p,p,C,p,p,w
p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p
它具有25行16列。
我也对替换值后如何删除数组感到困惑。感谢您的帮助,对于任何错误,对于我对C ++来说还很陌生。
答案 0 :(得分:0)
您想使用string replace来简化生活!
编辑:我在下面进行了测试,它适用于您的示例
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
char arr[25][16];
int i=0; int j=0;
string temp; char c;
ifstream fin("mapPoke.txt");
if(!fin){ cerr << "Couldn't open file\n"; }
while(getline(fin,temp)){
if(!temp.empty()){
//find and replace p's
while(temp.find('p') != string::npos){
temp.replace(temp.find('p'),1,1,'*');
}
//find and replace w's
while(temp.find('w') != string::npos){
temp.replace(temp.find('w'),1,1,'~');
}
//erase commas
while(temp.find(',') != string::npos){
temp.erase(temp.find(','),1);
}
//here all w's and p's have been replaced, and commas are removed
//uncomment the line below if you want to see the output
//cout << temp << endl;
//insert in array, character by character
for(int k=0;k<temp.length();k++){
arr[i][j++]=temp[k];
}
j=0;
i++;
}
}
fin.close();
//and to cout the 2D array
for(i=0;i<25;i++){
for(j=0;j<16;j++){
cout<< arr[i][j];
}
cout<<endl;
}
return 0;
}
输出为:
~~~~~~~*********
*~~~~~~G**C***G*
*~~~~~~*********
*~G~~~~*********
****~~~****G****
*C~~~~~*C****C**
***~~~~~********
****~~~********G
*G**~~**********
***~~**C***C**C*
***~~**~G*******
*~*C~~*~~~*G~~**
*~***~******~~~G
*CG~~~***C*~~~~~
**~~~~~****~~~~~
**~~~~~****~~~~~
***~~~~~~***~~~~
*G*~~~~~~C**~~~~
**~~~~~~***~~~~~
**~~~~~~G*C~~~~~
**~~~~~~~***~~~~
**C~~~~~~***G~~~
******G******~*~
*G*****C****C**~
****************