c++ - 替换二维数组中的字符
问题描述
编辑***
我无法替换二维数组中的字符。最初,我的代码从文本文件中读取数据并将数据存储在临时字符串中。我对如何用不同的字符替换字符感到困惑。我使用了嵌套的 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++ 还很陌生。
解决方案
您想使用字符串替换来让您的生活更轻松!
编辑:我在下面对此进行了测试,它适用于您的示例
#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**~
****************
推荐阅读
- java - 为什么 Symbol 的字段(左右)总是返回 0?
- events - 谷歌日历 API 问题(已删除项目)
- wix - 如果已安装应用程序,如何创建自定义错误对话框?
- angular - 无法使用日期字符串对物料表列进行排序
- python - python中的数据表示差异
- html - 无法用鼠标单击列表中的第一个单选按钮,但可以使用向上和向下箭头键选择它
- java - 是否可以从对象数组中删除索引?
- python - 使用 python 将 [abc] 转换为 [a,b,c]
- django - DRF 序列化程序错误:AttributeError:“FeedPostSerializer”对象没有属性“auth_user”
- css - Webpack CSS 输出总是最小化