在C ++中检查空格?

时间:2013-03-08 15:42:55

标签: c++ spaces

我正在为课程编写加密程序。我需要能够跟踪字符串中空格的位置,以及将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);
}

2 个答案:

答案 0 :(得分:2)

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

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

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


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

答案 1 :(得分:1)

int spacePosition[0];  
string message[0], encrypt[0];

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