2012-03-30 83 views
-3

我試圖將輸入文件中的某些方程式更改爲「可讀」形式。
目前我需要讀取字符串P中的所有數值(作爲子字符串,稍後將它們轉換爲int)。我感興趣的所有值都在「+」和「n」字符之間(按此順序爲一個循環,以及其他循環的倒序)。
我需要一個循環,找到所有這些並將它們保存到數組(未知大小,因爲我不知道字符串P會多久)。搜索「+」和「n」字符之間的所有子域

輸入的例子(列P在引號):

  1. 「+ N2 + -n」
    第一個循環(從+到n次讀取)這樣的子串C是: 「」, 「 - 」
    第二回路(從n至+讀取),使子E爲: 「2」, 「」

  2. 「+ 2N3 + 3N2 + N」
    第一循環: 「2」, 「3」, 「」
    第二循環: 「3」, 「2」, 「」

  3. 「+ -n14 + -11n + 1」
    首先循環: 「 - 」, 「-11」
    第二環: 「14」, 「如果解決方案需要」

我可以添加 「+」 到P字符串的結尾。

ps。如果有人有一個想法如何從字符串的末尾提取一個常量(+1或其他),我會很感激。困難的是我不知道會有多長時間(+1可以達到-300000左右)。

+5

這功課嗎? – 2012-03-30 18:29:41

+0

RegExp類的'Split'方法可能有幫助。 – 2012-03-30 18:34:41

+0

類別。整個混亂是由輸入文件中使用的人類自然語言造成的。不幸的是,我無法對它的格式做任何事情。此外,我被迫使用標準庫(沒有Boost等)。 – Zaero 2012-03-30 18:36:06

回答

0

我真的不明白你的問題,但我個人使用每當我有未知的長/非常大的投入是一個linked list,你可以在C++與dynamic memory allocation,這也有可能用C使用malloc實現( ),如果你發現你需要C語法。

與解析輸入一樣,您可以使用用1初始化的變量,並且每次到達子字符串的末尾時將其與-1相乘,並使用覆蓋每個個案的簡單if語句。或者你可以使用一個帶有「n」或「+」的字符,所以你必須讓if語句只包含幾行代碼,在完成實際解析之後,並且每當你的光標到達時上面提到的char變量,就像它已經完成了另一個子字符串的工作。

2

請考慮查看正則表達式(通常)以及C++ 0x(特別是)中的新std :: regex類。如果要分析任何更爲複雜的模式

C++0x: Regular Expressions

正則表達式始終是一個完美的解決方案。

相關問題