簡體   English   中英

string x和int y作為函數的參數 - 不能使用if(x.length()

[英]string x and int y as parameters of function- Cannot use if (x.length()<y) inside the function?

我正在嘗試創建以下過程:

void something(string x, int y)
{
    if(x.length()<=y)

    etc.
}

它編譯但計算機瘋了,打印出各種奇怪的符號,發出嗶嗶聲然后崩潰。

我相信這是因為我不能使用if(x.length()<y)如果x仍然是未知的,因為我正在創建一個過程。我想我必須將我的字符串x轉換為c字符串,但我不知道我不知道該怎么做。

你確定它是比較的部分,事情變得瘋狂嗎?

我的測試程序test

#include <string>
#include <cstdio>

using namespace std;

void something(string x, int y) {
  if(x.length() <= y)
    printf("Length smaller or equal\n");
  else
    printf("Length larger\n");
}

int main(int argc, char** argv) {
  string x = "This is a string";
  int y1 = 10;
  int y2 = 20;

  something(x, y1);
  something(x, y2);

  return 0;
}

使用g++ test編譯,這會產生一個名為a.out的可執行文件,在運行時會生成所需的輸出:

$ ./a.out
Length larger
Length smaller or equal

注意:這是在Ubuntu上,但我想不出為什么這應該在Windows上失敗的原因。

您的問題可能是在發布的代碼中的其他地方。 你的假設'我相信它是因為我不能使用if(x.length()<y)如果x仍然是未知的,因為我正在創建一個過程'是錯誤的,代碼是在你調用函數后執行的指定的參數。 檢查你的字符串是否已正確初始化(這可能是因為你使用字符串類,即使你沒有為它指定任何東西,它也會初始化為空字符串)。 順便說一句,將std :: string轉換為c-string的最佳方法是使用字符串類的c_str()方法,但它不能解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM