-1

我正在为课堂编写一个加密程序。我需要能够跟踪字符串中空格的位置,以及将 13 添加到字符串每个字符的 ASCII 值。我在第 46 行不断收到错误,我看不出我做错了什么。

/*
program 4

use an array to store the string
convert decimal values to ASCII, add 13 to the ASCII values, 
convert back to decimal
the character for the space shoud be determined by the character 
that came before it.
The character before it should have 4 added to it and 
placed after itself to act as the space.
*/

#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>

using namespace std;

int valueChange(string array), length(string array);
int spacePosition[0]; 
string message[0], encrypt[0];


int main()
{

cout << "Please enter your message."; //start with this
cin >> message[0];

int value = length(message[0]);
int count=0;

/*

store message as an array

loop through array, adding 13 to each value, use tolower() on each value
if value is 

*/
for (int i=0; i < value; i++)
{
    valueChange(message[i]);

    if (message[i] == ' ') //checks for spaces in the string
    {
        spacePosition[count] = i + 1; //records the placement of spaces
                                      //in the string

    //have the array cast the i value to a new int value
    //store space positions in an array

    count++;
    }
 }

 cout << "&";
 cout << "Message encrypted and transmitted."; //final message

 getch();
 return 0;
}

int valueChange(int array[])
{
array[0] += 13;

if (array[0] > 122)
{
 array[0] - 122;
 }

 return (array[0]);
}

int length(string array)
{
return (array.length() - 1);
}
4

2 回答 2

2

如果您需要搜索空格,您可以使用string::find_first_of(string). 你只需要写`

std::string yourstring; 
yourstring.find_first_of(" ");

` 那么你需要使用迭代器遍历整个字符串。


如果长度为零,为什么要清除数组?您可以简单地使用简单的 std::string 类。如果您不允许,那么只需使用find_first_of(....)标准库中可用的功能。它基本上将迭代器返回到第一个匹配元素。

于 2013-03-08T15:49:21.950 回答
1
int spacePosition[0];  
string message[0], encrypt[0];

可能希望那些是 1……或者根本不使用数组。但是您要声明长度为 0 的数组,所以是的,当您尝试写入它们时会出现段错误。

于 2013-03-08T15:48:23.363 回答